/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ngc;

import edu.ucue.ptc.gco.dao.DetallePedidoDAOLocal;
import edu.ucue.ptc.gco.mdl.DetallePedido;
import edu.ucue.ptc.gco.util.StockInsuficienteException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.inject.Inject;
import javax.inject.Named;
/**
 *
 * @author Fabian
 */
@Stateful
@Named(value="detallePedidoManager")
public class DetallePedidoManager implements DetallePedidoManagerLocal {
       @Inject
    private DetallePedidoDAOLocal midetallePedidoDao;
        
       @EJB
       private ProductoManagerLocal MiProductoManagerLocal;
       
    @Override
    public void crearDetallePedido(DetallePedido midetallePedido) {
        midetallePedidoDao.crear(midetallePedido);
    }

    @Override
    public void actualizarDetallePedido(DetallePedido midetallePedido) {
        midetallePedidoDao.actualizar(midetallePedido);
    }

    @Override
    public void eliminarDetallePedido(DetallePedido midetallePedido) {
        midetallePedidoDao.eliminar(midetallePedido);
    }

    @Override
    public List<DetallePedido> listarTodosDetallePedidos() {
        return midetallePedidoDao.listarTodos();
    }

    @Override
    public DetallePedido obtenerDetallePedidoPorId(int idDetallePedido) {
        return midetallePedidoDao.obtenerPorId(idDetallePedido);
    }
    @Override
    public void ValidaStockPedido(List<DetallePedido> lista, String user, String password){
    for (int i=0;i<lista.size();i++){
              int codiprod = lista.get(i).getProducto().getIdProducto();
              int cantidad = lista.get(i).getCantidad();
              //pasar el pedido entero
              //inyectar manger del inventario , se invoca la consultar
             // Query query = entityManager.createQuery("select cantidadActual from Lote where idProducto ='"+ codiprod+"';");
               Long StockActual;
              
            try {
                StockActual = MiProductoManagerLocal.obtenerTotalStock(codiprod,user,password);
                if ( StockActual < cantidad ){
                    throw new StockInsuficienteException("NO hay suficiente stock para el pedido del producto  "+lista.get(i).getProducto().getNombreProducto()+"existencias :"+StockActual);
                }
            } catch (Exception ex) {
                Logger.getLogger(DetallePedidoManager.class.getName()).log(Level.SEVERE, null, ex);
            }
              
            
          }
    }

}
